package srzy.module

import srzy.common.ShellExecute
import srzy.rb._

object MsgComp extends AbsCaseDeal with srzy.common.Logging {

  val filterList = List("100", "101", "001")

  def filterMsg(s: String) = filterList.foldLeft(s)((e, q) => {
    val r1 = ("""\[""" + q + """=[\p{Graph}]+?\]""").r
    r1.replaceAllIn(e, "")
  })

  def deal = {
    val receMsgs = getCaseInfo.receMsg
    val receStdMsgs = getCaseInfo.receStdMsg

    if (receMsgs.size != receStdMsgs.size) {
      logger.error("receStdMsgs size " + receStdMsgs.size + " not equal to receMsgs size "
        + receMsgs.size + " !")
      fail
    } else {

      for (i <- 0 until receMsgs.size) {

        val receMsg0 = receMsgs.apply(i)

        val receMsg1 = getCaseInfo.exceptCondition.split(",").toList.foldLeft(receMsg0)((e, q) => {
          val r1 = ("""\[""" + q + """=[\p{Graph}]+?\]""").r
          r1.replaceAllIn(e, "")
        })

        val receMsg = filterMsg(receMsg1)

        val receStdMsg1 = receStdMsgs.apply(i)

        val receStdMsg = filterMsg(receStdMsg1)

        val (res, compLog) = RBMsg.compare2(receMsg, receStdMsg)

        if (res == false) {
          getCaseInfo.msgCompInfos.append("line:" + i + "\n" + compLog)
          fail
        }
        //        val rece = new RBMsgFullParser()
        //        if (rece.parseMsg(receMsg) == false) {
        //          logger.error("rece msg parse error :" + receMsg + ",CaseName:"
        //            + getCaseName)
        //          fail
        //        } else {
        //          val receStd = new RBMsgFullParser()
        //          if (receStd.parseMsg(receStdMsg) == false) {
        //            logger.error("recestd msg parse error :" + receStdMsg + ",CaseName:"
        //              + getCaseName)
        //            fail
        //          } else {
        //            logger.debug("receMsg   :" + receMsg)
        //            logger.debug("ReceStdMsg:" + receStdMsg)
        //            val bool = receStd.equals(rece)
        //            getCaseInfo.msgCompInfos.append("line:" + i + "\n" + receStd.getCompLog())
        //            if (!bool) fail
        //          }
        //        }

      }
    }

  }

  def fail = {
    getCaseInfo.msgCompResult = false
    getCaseInfo.caseResult = false
  }
}